/**
 * OnePara
 *
 */
if(typeof (module) !="undefined"){
    module.exports = OnePara;

    var CompoundPath= require('./CompoundPath');

}


function  OnePara()
{
    // 包含多个字轮廓
    this.chars =  new Array();
    this.w = 0;
    this.h = 0;
}
// 转成json字符串
// 参数： frame为true，表示转成frame（所谓frame指的是文字的每个字的x、y、w、h，但不包括文字的每个点）
OnePara.prototype.toJson=function (frame){
    frame = (frame)? true:false;

    var ret = '{';
    ret +='"chars":[';
    for(var i=0;i<this.chars.length;i++){
        if(i>0){
            ret +=',';
        }
        ret += this.chars[i].toJson(frame);
    }
    ret +=']';
    ret +=',';
    ret +=('"w":'+this.w);
    ret +=',';
    ret +=('"h":'+this.h);
    ret +='}';
    return ret;
}
// 从json对象中解析
// 参数： frame为true，表示从frame中解析（所谓frame指的是文字的每个字的x、y、w、h，但不包括文字的每个点）
OnePara.prototype.fromJson = function(jsonObj, versionId,frame){
    frame = (typeof frame ==undefined || typeof frame ==undefined)? false:frame;
    this.chars.splice(0,this.chars.length);
    for(var i=0;i<jsonObj.chars.length;i++){
        var ch = new CompoundPath();
        ch.fromJson(jsonObj.chars[i],versionId, frame);
        this.chars.push(ch);
    }
    this.w = jsonObj.w*1;
    this.h = jsonObj.h*1;
}
/**
 * 利用ParaControu的矩阵和CompoundPath的矩阵更新轮廓点
 * 参数：
 *      pcMatrix：ParaContour的矩阵，可能为null
 */
OnePara.prototype.multiplyMatrix= function(pcMatrix){
    // 变换矢量
    for(var k = 0; k < this.chars.length; k++) {
        var ch = this.chars[k] ;
        ch.multiplyMatrix(pcMatrix);
    }
}
/**
 * 转换成SVG格式的字符串数组：
 *  [
 *      'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z',
 *      'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90 z'
 *  ]
 */
OnePara.prototype.toSvgPath= function(){
    var ret = new Array();
    for(var i=0;i<this.chars.length;i++){
        ret.push(this.chars[i].toSvgPath());
    }
    return ret;
}
// 调整单行段落，平移或者缩放
// 参数
//		charContour:复合路径
//		vW:水平方向的平移值或者缩放值
//		vH:垂直方向的平移值或者缩放值
// 		type:类型，1 平移  2 缩放
OnePara.prototype.adjustPosition = function(vW, vH, type){
    if(2==type){
        this.w *= vW;
        this.h *= vH;
    }
    
    for(var j = 0; j < this.chars.length; j++) {
        this.chars[j].adjustPosition( vW,vH,type);
    }
}
